package com.example.mobilesafe.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    /**
     * 给指定字符串按照MD5算法进行加密
     * @param password 待加密的字符型
     * @return 加密过后的字符串
     */
    public static String encoder(String password){
        try {
            // 0.加盐处理
            password = password + "password";
            // 1.指定加密算法类型
            MessageDigest digest = MessageDigest.getInstance("MD5");
            // 2.将需要加密的字符串中转换成byte类型的数组，然后进行随机的哈希过程
            byte[] bs = digest.digest(password.getBytes());
            // 3.循环遍历数组，然后让其生成32位字符串，固定写法
            StringBuffer stringBuffer = new StringBuffer();
            for (byte b : bs) {
                int i = b & 0xff;
                // 4.将int类型的i转换成16进制字符
                String hexString = Integer.toHexString(i);
                if (hexString.length() < 2){
                    hexString = "0" + hexString;
                }
                // 5.字符串拼接
                stringBuffer.append(hexString);
                return stringBuffer.toString();
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }
}
